<?php
class Connect_to_database
{
	private $host;//主机名
	private $user;//用户名
	private $pass;//密码
	private $name;//数据库名
	private $charset;//字符集
	private $link;//连接对象
	public function __construct($lsarr=array())
	{
		$this->host=$lsarr['host'];
		$this->user=$lsarr['user'];
		$this->pass=$lsarr['pass'];
		$this->name=$lsarr['name'];
		$this->charset=$lsarr['charset'];
		$this->codb();//连接服务器
		$this->selectdb();
		$this->setcharset();
	}
	private function codb()
	{
		if(!$this->link=@mysqli_connect($this->host,$this->user,$this->pass))
		{
//			echo "连接数据库失败";
			die();
		}
//		echo '连接数据库成功';
	}


/*$sql='select * from '*/

private function selectDb()
{
	if(!mysqli_select_db($this->link,$this->name))
	{
	echo "选择数据库{$this->name}失败!";die();
	}
//	echo "数据库连接成功";
	//die();
}
//私有设置字符集
private function setcharset()
{
	mysqli_set_charset($this->link,$this->charset);
	//公共的执行语句的方法：insert,updatda,set.drop等
	//执行成功返回true，执行失败返回false
}
public function exec($sql)
{

	//将sql语句转成小写
	//$sql='update student1 set name="李凯成"，sex="男",city="江苏南京"where id=12';
	$sql=strtolower($sql);
	//判断是不是SQL语句,先转换成小写，前六个字幕全部提取与select对比
	if(substr($sql, 0,6)=='select')
	{//是select语句终止执行
	echo "不能执行select语句";die();
	}
//返回执行的结果（布尔值），直接返回给前端
return mysqli_query($this->link,$sql);
}
//私有的执行sql语句的方法：select,结果集还有进一步执行，所以用私有的
//执行成功返回结果集，执行失败返回false
private function query($sql)
{
	//例如：select * from student
	$sql=strtolower($sql);
	//判断是不是SQL语句
	if(substr($sql,0,6)!='select')
{
	echo "不能执行非select语句"; die();
}
  //返回执行的结果(结果集对象)，需要在类中进一步处理
  return mysqli_query($this->link,$sql);
}
//公共获取单行数据的方法
public function fetchone($sql,$type=3)
{
  //执行SQL语句，调用query()并返回结果集对象
	$result=$this->query($sql);//调用别的方法
	//定义返回数组类型的常量，方法做的活，用的方便
	$types=array(
            1=>MYSQLI_NUM,//数字数组
            2=>MYSQLI_BOTH,//两者都有
            3=>MYSQLI_ASSOC,//关联数组
	);
//返回一维数组
return mysqli_fetch_array($result,$types[$type]);
//对应关系return mysqli_fetch_array($result,MYSQLI_ASSOC);
}
//公共获取更多行数据的方法
public function fetchall($sql,$type=3)
{
    //执行SQL语句，调用query()并返回结果集对象
    $result=$this->query($sql);
    //定义返回数组类型的常量
    $types=array(
            1=>MYSQLI_NUM,
            2=>MYSQLI_BOTH,
            3=>MYSQLI_ASSOC,
    );
    //返回二维数组
    return mysqli_fetch_all($result,$types[$type]);

}
//获取记录数
public function rowCount($sql)
{
	//执行SQL语句，调用query()并返回结果集对象
	$result=$this->query($sql);
	//返回记录数
	return mysqli_num_rows($result);
}
//公共的析构方法
public function __destruct()
{

	mysqli_close($this->link);//断开mysql连接
}
}
$arr=array(
	'host'=>'localhost',
	'user'=>'root',
	'pass'=>'123456',
	'name'=>'cofunworld',
	'charset'=>'utf8'
);

//var_dump($db);
?>